A processor core can execute global memory access instructions of a particular computer program that read data from a set of global memory addresses, that write data to the set of global memory addresses, or that both read and write data to the set of global memory addresses, where the global memory access instructions of each part of the particular computer program utilize the same set of global memory addresses regardless of if each part was compiled separately from each other. A subset of global memory addresses can be allocated to a small global data area of a particular data processor and a general purpose register of the particular data processor can be reserved to point into this area. Each global memory access instruction can utilize this general purpose register plus an offset to read and/or write data from/to each global variable allocated to the small global data area. However, the general purpose register needs to be preserved across all routines, e.g., all routines must use this register for the same purpose, to avoid becoming an Application Binary Interface (ABI) issue. It can also be difficult to select which subset of the global memory addresses should be allocated to the small global data area due to its limited size.